Wir haben uns angesehen, Datentypen in sehr einfacher Form, zum Beispiel natürliche Zahlen
oder binäre Bäume. Es erstaunt mich fast ein bisschen, dass sich spätestens in dem Moment,
wo ich die Bäume eingeführt habe, keiner beschwert hat, dass man da nichts dran schreiben darf.
Gut, ich hatte es vielleicht auch von alleine sogar erwähnt. Also das, was wir bisher haben,
ist evidenterweise keine besonders befriedigende Art von Datentyp. Also zum Beispiel sowas wie
Listen über irgendwelche Einträgen, ja, können wir damit nicht. Also wir können an die Datentypen
nichts ran schreiben, es sei denn, wir Listen eben, also so für Enumeration-Types geht es noch,
da führen wir zur Not irgendwie Konstanten ein für alles, was wir da ran schreiben wollen. Aber
sobald es irgendwie an, das weiß ich, Listen von natürlichen Zahlen geht oder sowas, was man ja
doch vielleicht ganz gerne haben möchte, bricht das also zusammen. So, das heißt also, ja, wir
haben über dem ganzen Schweben so einen Begriff von Mehrsortigkeit, der uns dann zum Beispiel
folgenden Datentyp, der, das kriege ich jetzt nicht gerettet, die uns also dann zum Beispiel
die Definition folgenden Datentyps erlauben würde, eben eines Typs von Listen über irgendwelchen
Einträgen des Typs A. Da würden wir also nicht wieder eine Leere Liste haben wollen.
Ich mache mal jetzt eine Zeile hier mit Semikolon und wir würden einen
Konstruktor haben wollen. Konstkonstruktor klingt wild, Konst heißt natürlich gerade Konstruktor,
der klassische, der Konstruktor aller Konstruktoren, nicht? Also die Art Konstruktor,
die mir ein Element vorne an eine Liste hängt. Wie sieht der aus? Der nimmt eben das vorne an zu
hängende Element und eine Restliste und bastelt daraus eine neue Liste. So, da hätten wir jetzt
also zwei Sorten, nicht? A und List A. Offenbar spielt das A dabei so eine leicht andere Rolle als
das List A, nicht? Also das A ist was, das sehen wir irgendwie als gegeben an und die Listen,
die konstruieren wir, nicht? Und insbesondere beobachte man, und wir machen das auch gleich noch
explizit. Ich möchte hier natürlich keine Konstruktoren haben, die mir neue Elemente von
A konstruieren. Das wäre irgendwie abusive. Also wenn ich irgendwie einen Datentyp natürliche
Zahlen rein kriege und darüber Listen konstruiere und der Datentyp für Listen, der produziert mir
neue natürliche Zahlen, das wäre irgendwie unsauber. Das heißt also dieses Ding hier
hat so eine Sonderrolle. Das ist eben ein Parameter der ganzen Geschichte. Das werden wir eben auch
formal explizit machen. Ja, so oder so reden wir also über Dinge, die also nicht mehr nur eine
unterliegende Menge haben werden, sondern eben mehrere, mindestens mal die Parameter. Das kann
uns ja nun nicht schocken. Wir haben ja schon den getypten Lambda-Kalkül gesehen. Und dann
machen wir sich auch Fragen, warum ich also hier von Sorten und nicht von Typen rede. Also so mal
als Slogan, Sorten sind irgendwie Typen ohne Typsystem gewissermaßen. Also es ist hier kein
richtiges Typsystem drüber zunächst mal. Ja, sondern, ja, so wollen wir uns die Datentypen hier angucken,
sondern wir haben einfach nur irgendwie durchindizierte Mengen. Deswegen nennen wir sie
nur Sorten und Typen werden es erst dann, wenn man da ein richtiges Typsystem mit mindestens mal
Funktionstyp-Konstruktor drüber setzt. Ja, ansonsten darf man sich getrost vorstellen,
dass also Sorten und Typen irgendwie dasselbe sind. Also im Bereich dieser Datentypanalyse ist eben
das Wort Sorte einfach üblicher als das Wort Typ. So, also es gibt mehrere Sorten und ich habe
gesagt, okay, also einige davon sind Parametersorten. Da kann man sich natürlich auch vorstellen,
dass es vielleicht mehrere gibt. Wenn ich irgendwie Listen aus abwechselnden Charakters und natürlichen
Zahlen haben will oder sowas, ja, dann habe ich da durchaus auch mal mehrere Parameter. Aber es kann
auch vorkommen, dass der eigentliche Datentyp, den ich konstruieren will, aus mehreren Sorten
besteht. Machen wir mal folgendes Beispiel. So, wie wollte ich den nennen? So, der kürze halber nenne
ich die Dinger mal weiter tree, damit ich nicht immer so viel schreiben muss. In einer sauberen
Bibliothek würde man da einen anständigen spezifischen Namen für verwenden. Was sollen
das für Bäume werden? Das sollen Bäume werden, bei denen ich mich nicht von Anfang an auf den
Verzweigungsgrad festlege. Die sind also endlich verzweigend, aber nicht irgendwie binär oder
ternär oder sowas, sondern da kann eben ein Knoten auch mal 25 Kinder haben oder sowas.
Relativ übliche Datenstruktur. Mit Fachausdruck heißen die sonst Rose Trees, nach, ich glaube,
dem Erfinder, ich weiß gar nicht, wie der mit Vornamen heißt. So, das heißt also, ja, was ist
Presenters
Zugänglich über
Offener Zugang
Dauer
01:23:30 Min
Aufnahmedatum
2018-06-11
Hochgeladen am
2018-06-11 16:59:04
Sprache
de-DE